var mongoose = require('mongoose');
var News = require('../models/news.model')// 引数据模型
var path=require('path');



// 新增
exports.create = function(req,res,next){
    var news = new News(req.body); // 从req.body里获取参数对象，比如{name:'vane',gender:'男',city:'杭州'....}

    news.save()
    .then(data=>{
        res.json(data)
    })
}

exports.getone = function(req,res,next){
    var id = req.params.id;

    News.findById(id,function(err,result){
        res.json(result)
    })
    
}

exports.getnews = function(req,res,next){
    var id= req.params.id;
    News.find({cateId:id},function(err,data){
        var rpTree = reverseTree(data,null);
        res.json(rpTree);
    });
}



//修改
exports.update = function(req,res,next){
  
    var id = req.params.id; // req.param('id')
    // 现在操作的都是mongoose而不是mongodb
    News.findByIdAndUpdate(id,{$set: req.body}, {new:false} )
    .then(data=>{
        res.json({msg:'数据修改成功',status:200}); // 如果你要返回数据，这个data返回的是你之前修改的那个数据内容
    })
}

//删除
exports.remove = function(req,res,next){
    var id = req.params.id;
    News.findByIdAndRemove(id,function(err,doc){
        res.json({msg:'数据删除成功',status:200})
    })
} 

exports.removes = function(req,res,next){
    var ids = req.body.ids;
    News.remove({ _id:{ $in: ids }})
    .then(data=>{
        res.json({msg:'数据删除成功',status:200})
    })
} 

exports.search = function(req,res,next){
    var page = (req.body.page) ? req.body.page : 1;
    var limit = (req.body.limit) ? req.body.limit : 2;
    var queryCondition = {};
    var title;
    if( req.body.title && req.body.title.trim().length>0 ){
        title = req.body.title;
        queryCondition = {"title":new RegExp(title,'i')}
    }


    News.paginate(queryCondition, { page: page, limit: limit }, function(err, result) {
        result.rows = result.docs;
        delete result.docs;

       res.json(result)
    });
}

exports.list = function(req,res,next){
    var page = (req.body.page) ? req.body.page : 1;
    var limit = (req.body.limit) ? req.body.limit : 9;

    var queryCondition = {};
    var cateId;
    if( req.body.cateId && req.body.cateId.trim().length>0 ){
        cateId = req.body.cateId;
        queryCondition = {"cateId":cateId}
    }


    News.paginate(queryCondition, { page: page, limit: limit }, function(err, result) {
        result.rows = result.docs;
        delete result.docs;

       res.json(result)
    });
}

function reverseTree(data,pid){
    var result=[],temp;

    var data= JSON.parse(JSON.stringify(data));

    for(var i in data){
        if(data[i].parentId === pid){
            result.push(data[i]);

            temp = reverseTree(data,data[i]._id);
 
            if(temp.length>0){
                data[i].children = temp;
            }
        }
    }
    return result;
}